package com.moji.util;

import com.moji.entity.SysRole;
import com.moji.entity.dto.TreeDto;
import org.springframework.util.CollectionUtils;

import java.util.ArrayList;
import java.util.List;

public class RoleTreeUtil {
    /**
     * list集合的行数据，转换成 tree 结构
     * @param list CcpSystemRole
     * @return
     */
    public static List<TreeDto> list2Tree(List<SysRole> list) {
        List<TreeDto> result = new ArrayList<>();
        if(!CollectionUtils.isEmpty(list)){
            for(SysRole r : list){
                if(r.getParentCode() == null || "0".equals(r.getParentCode())) {
                    TreeDto vo = new TreeDto(r.getId().toString(),r.getRoleCode(), r.getRoleName(),r.getParentCode(),r.getParentName(),r.getOrderNo().toString(),null,null,null);
                    vo.setTreeList(recurrence(list, r));
                    result.add(vo);
                }
            }
        }
        return result;
    }
    /**
     *  递归函数
     * @param list
     * @param vo
     */
    private static List<TreeDto> recurrence(List<SysRole> list, SysRole vo) {
        List<TreeDto> subNodes = new ArrayList<>();
        for (SysRole r : list) {
            if (vo.getRoleCode().equals(r.getParentCode())) {
                TreeDto sub = new TreeDto(r.getId().toString(),r.getRoleCode(), r.getRoleName(),r.getParentCode(),r.getParentName(),r.getOrderNo().toString(),null,null,null);
                sub.setTreeList(recurrence(list, r));
                subNodes.add(sub);
            }
        }
        return subNodes;

    }
}
